10 'DISPLAY DOT MATRIX CHARACTERS           FROM ROM PATTERNS
20 'SAMPLE INPUT ... 40,DON\JUAN
30 'PROGRAM CHANGES SCREEN WIDTH TO THE SPECIFIED 40 OR 80 CHARACTERS
40 'MESSAGE IS DISPLAYED IN LARGE CHARACTERS
50 'MAXIMUMS - 2 LINE DISPLAY
60 '         - WIDTH=40 4 CHARACTERS PER LINE
70 '         - WIDTH=80 8 CHARACTERS PER LINE
80 'THE BACKSLASH CHARACTER "\" STARTS THE SECOND LINE PRINT
90 DEFINT A-Z
100 SCREEN 0,0
110 DEF SEG=&HF000
120 BASEADR=&HFA6E
130 BYTESPERCHAR=8
140 KEY OFF
150 CLS
160 LOCATE 24,2
170 INPUT "ENTER WIDTH,MESSAGE";WID,MSG$
180 CLS
190 IF (WID=40 OR WID=80) GOTO 200 ELSE PRINT "INVALID SCREENWIDTH...REENTER":CLS:GOTO 160
200 WIDTH WID
210 LOCATE 24,2
220 PRINT "WIDTH = ";WID;" MESSAGE = ";MSG$
230 'X,Y = START LOCATION FOR CURRENT CHARACTER
240 X=2: Y=2
250 NUM=LEN(MSG$)
260 FOR I=1 TO NUM
270   CHAR$=MID$(MSG$,I,1)
280   IF CHAR$="\" THEN X=X+11:Y=3:GOTO 360
290   IF WID=40 AND Y>32 GOTO 360
300   IF WID=80 AND Y>73 GOTO 360
310   IF X>13            GOTO 360
320   CODE=ASC(CHAR$)
330   ADRESS=BASEADR+(CODE*BYTESPERCHAR)
340   GOSUB 380
350   Y=Y+9
360 NEXT I
370 GOTO 160
380 FOR ROW=1 TO 8
390   ROWVAL=PEEK(ADRESS+(ROW-1))
400   FOR COL=1 TO 8
410     COLMASK=2^(7-(COL-1))
420     IF (ROWVAL AND COLMASK) <> 0              THEN GOSUB 460
430   NEXT COL
440 NEXT ROW
450 RETURN
460 'LOCATE TO BIT POSITION AND DISPLAY GIANT PIXEL
470 X1=X+(ROW-1)
480 Y1=Y+(COL-1)
490 LOCATE X1,Y1
500 PRINT CHR$(CODE)
510 RETURN
